package com.zhaoliang.dao.impl;

import com.zhaoliang.dao.GoodDao;
import com.zhaoliang.pojo.Good;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 物品访问对象规范实现类
 */
public class GoodDaoImpl implements GoodDao {

    @Override
    public List<Good> getGoodList() {
        // 1. 存放物品逻辑模型的集合
        List<Good> goodList = new ArrayList<>();
        // 2. 三个对象引用 连接 预处理命令 结果集
        Connection conn = null;
        PreparedStatement psmt = null;
        ResultSet rs = null;
        try {
            // 3. 加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 4. 通过驱动管理器获取数据库连接对象
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/purchase?useSSL=false", "root", "123456");
            // 5. 编写Sql语句
            String sql = "select * from t_good";
            // 6. 创建预处理命令对象
            psmt = conn.prepareStatement(sql);
            // 7. 执行查询，返回结果集
            rs = psmt.executeQuery();
            // 8. 解析结果集
            while (rs.next()) {
                // 8-1. 获取列数据值
                int gid = rs.getInt(1);
                String gname = rs.getString(2);
                int price = rs.getInt(3);
                int count = rs.getInt(4);
                String remark = rs.getString(5);

                // 8-2. 使用获取的列数据值 封装逻辑模型
                Good good = new Good(gid, gname, price, count, remark);
                // 8-3. 把模型放到模型集合中
                goodList.add(good);
            }
            return goodList;
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        } finally {
            // 9. 释放资源
            try {
                if (rs != null) {
                    rs.close();
                }
                if (psmt != null) {
                    psmt.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
}
